package com.chapter6.jiekou.demo4;

import com.chapter6.jiekou.demo1.Animal;
import com.chapter6.jiekou.demo1.Cat;
import com.chapter6.jiekou.demo1.Dog;
import com.chapter6.jiekou.demo3.Bird;
import com.chapter6.jiekou.demo3.Flyable;


/**
 * 可以把任何实现了Animal接口的类的对象都转型为Animal接口类型，这是合法的，且不需要强制类型转换。
 * 转型为Animal接口类型后，只要调用的方法是该接口中声明的方法，一切就都可以正常运行。
 */
public class Zoo {
    public static void main(String[] args) {
        Animal[] animals ={new Dog(),new Cat(),new Bird()};
        for (Animal an:animals){
            an.eat();
            an.sleep();
        }

        //Bird对象转换为Flyable接口类型，由于animals[2]是Animal接口类型，因此需要强制类型转换，
        // 然后就可以调用Flyable接口所定义的fly方法了
        ((Flyable)animals[2]).fly();

    }
}
